<!DOCTYPE html>
<html lang="en">
<head>
	<meta name="generator" content="Hugo 0.84.0" />
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<style type=text/css>body{font-family:monospace;}</style>
	<title>可爱淘哇</title>
	<meta name="description" content="慧林淘友之达人助手:交流与建议、BUG反馈。">
	<meta name="keywords" content="慧林淘友,白菜林,慧转发,慧林联盟">
	<meta name="author" content="白菜林">
	<link rel="stylesheet" href="/css/style.css">
	
	<link rel="alternate" type="application/rss+xml" href="/index.xml" title="可爱淘哇">
</head>
<body>
	<header>
	==================<br>
	== <a href="https://www.lyhuilin.com/">可爱淘哇</a> ==<br>
	==================
	<div style="float: right;">交流与建议、BUG反馈！</div><br>
	<p>
	<nav>
			
			
			
			<a href="/home/"><b>Home</b></a>.
			
			<a href="https://gitee.com/lyhuilin"><b>Gitee</b></a>.
			
			<a href="https://support.qq.com/products/65159"><b>Support</b></a>.
			
	</nav>
	</p>
	
</header>

	
	<main>
		
		
			<article>
	<h1><a href="https://www.lyhuilin.com/posts/go20210514/">Go20210514 今日技术分享</a></h1>
	<b><time>14.05.2021 22:58</time></b>
	
	<a href="/tags/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB">技术分享</a>
	
	<a href="/tags/golang">Golang</a>
	
	<div>
		今日技术分享
  面试官：聊聊 defer 的工作原理。。。 https://mp.weixin.qq.com/s/oWlQU9c9z11CHdOwOMOHxA
  深度解密Go语言之基于信号的抢占式调度 https://mp.weixin.qq.com/s/xdhv24Lh-7smOT5ESw2dBw
  聊聊如何做技术分享 https://mp.weixin.qq.com/s/iRe1aGShDBeVhLhOSHwbMQ
  Uber 使用 Go 的规模这么大？！都自己定制的 Go 编译器了 https://mp.weixin.qq.com/s/MO0WNlwecDVLx4QfWklamA
  如何让消息队列达到最大吞吐量？ https://mp.weixin.qq.com/s/Y1qWYdzNs8EXCFu_DtBH9g
  薪资比肩北上广，你会考虑回老家吗？急招哦 https://mp.weixin.qq.com/s/koCxSjX8tXMMY3Yn8c4KpA
  kubebuilder 进阶: 测试 https://mp.weixin.qq.com/s/tcLIx3E0LyRkNhPO0U8zmg    从0.5到1用golang上线一个web项目 https://mp.weixin.qq.com/s/ZqbDY3IjtH2s5_oeDvhQVQ
  从0到0.5用golang写一个web项目 https://mp.weixin.qq.com/s/XXLFwlmOUaD7a3hftYCd2A
  译文 Go 的抢占式调度 https://gocn.vip/topics/12062
  深度解密 Go 语言之基于信号的抢占式调度 https://mp.weixin.qq.com/s/ESfbVoCGUIdpwFOfGyvz1w
  使用 Golang 的交叉编译 https://linux.cn/article-13385-1.html
  Go 无分支编码 https://mattnakama.com/blog/go-branchless-coding/
		
			<a href="https://www.lyhuilin.com/posts/go20210514/">Read more...</a>
		
	</div>
</article>

		
			<article>
	<h1><a href="https://www.lyhuilin.com/posts/go20210513/">Go20210513 今日技术分享</a></h1>
	<b><time>13.05.2021 22:59</time></b>
	
	<a href="/tags/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB">技术分享</a>
	
	<a href="/tags/golang">Golang</a>
	
	<div>
		今日技术分享
  Go：跨团队协作时如何共享对象 https://mp.weixin.qq.com/s/zJaruocUDSzld8ttDyawng
  template源码分析 https://mp.weixin.qq.com/s/HqcaFEXgQbcRyjYjI6oKGQ
  kubebuilder 实战: status &amp; event https://mp.weixin.qq.com/s/JuRlClCX7TnQKaW-Rr3Z7g    如何优雅地实现并发编排任务 https://mp.weixin.qq.com/s/M88-VS_H7o754mw5Ra7BYg
  Prometheus 二次开发之 API 接口 https://mp.weixin.qq.com/s/K7ERtE2KKflYSA9KJOukYg
  从TDSQL，看分布式数据库的技术之美 https://mp.weixin.qq.com/s/CbzlPmGJCQKi3UmvwjFC1Q
  Go Team Leader — rsc大神新开源了一个库，增强模板功能 https://mp.weixin.qq.com/s/3DFejimkPY9tg9QQL2QTqw
  Wow，联通数科也招Gopher了 https://mp.weixin.qq.com/s/tVY3AuUOYEnMKi7Km4eBCw
  Go 数组比切片好在哪？ https://mp.weixin.qq.com/s/zp1vdhGukEYKpzAdPt--Mw
  Go 缓存系列之 go-cache https://mp.weixin.qq.com/s/dKlfwJ69s3fUBWYIV57hyg
  Go 存储基础 — 内存结构体怎么写入文件？ https://mp.weixin.qq.com/s/mfNz7r76vZOOgiMSmuVeJA
  深度解密Go语言之基于信号的抢占式调度 https://mp.weixin.qq.com/s/ESfbVoCGUIdpwFOfGyvz1w
  实现无限缓存的 channel https://colobu.
		
			<a href="https://www.lyhuilin.com/posts/go20210513/">Read more...</a>
		
	</div>
</article>

		
			<article>
	<h1><a href="https://www.lyhuilin.com/posts/swift-basic-syntax/">Swift语法全面解析</a></h1>
	<b><time>13.05.2021 21:31</time></b>
	
	<a href="/tags/swift">swift</a>
	
	<a href="/tags/%E8%AF%AD%E6%B3%95%E5%9F%BA%E7%A1%80">语法基础</a>
	
	<a href="/tags/%E7%BC%96%E7%A8%8B%E5%AD%A6%E4%B9%A0">编程学习</a>
	
	<a href="/tags/ios">ios</a>
	
	<div>
		Swift介绍 Swift 是一门开发 iOS, macOS, watchOS 和 tvOS 应用的新语言。 swift 是一种安全，快速和互动的编程语言。 swift 支持代码预览（playgrounds），这个特性可以允许程序员在不编译和运行应用程序的前提下运行 Swift 代码并实时查看结果。
Swift 通过采用现代编程模式来避免大量常见编程错误：
 变量始终在使用前初始化。 检查数组索引超出范围的错误。 检查整数是否溢出。 可选值确保明确处理 nil 值。 内存被自动管理。 错误处理允许从意外故障控制恢复。  基础部分 常量和变量 声明常量和变量， 常量和变量必须在使用前声明，使用 let 来声明常量，使用 var 来声明变量。 示例：
let maximumNumberOfLoginAttempts = 10 var currentLoginAttempt = 0 // 类型注解 var welcomeMessage: String 注释 单行注释双正斜杠（//）， 多行注释（/* 多行的 */）。Swift 的多行注释可以嵌套在其它的多行注释之中。 示例：
// 这是一个注释 /* 这也是一个注释， 但是是多行的 */ /* 这是第一个多行注释的开头 /* 这是第二个被嵌套的多行注释 */ 这是第一个多行注释的结尾 */ 分号 Swift 并不强制要求你在每条语句的结尾处使用分号（;）。 同一行内写多条独立的语句必须用分号分隔。
		
			<a href="https://www.lyhuilin.com/posts/swift-basic-syntax/">Read more...</a>
		
	</div>
</article>

		
			<article>
	<h1><a href="https://www.lyhuilin.com/posts/go_cross_compilling/">使用 Golang 的交叉编译</a></h1>
	<b><time>13.05.2021 14:35</time></b>
	
	<a href="/tags/golang">Golang</a>
	
	<a href="/tags/%E7%BC%96%E7%A8%8B%E5%AD%A6%E4%B9%A0">编程学习</a>
	
	<div>
		在 Linux 上测试软件时，我使用各种架构的服务器，例如 Intel、AMD、Arm 等。当我 分配了一台满足我的测试需求的 Linux 机器[1]，我仍然需要执行许多步骤：
  下载并安装必备软件 验证构建服务器上是否有新的测试软件包 获取并设置依赖软件包所需的 yum 仓库 下载并安装新的测试软件包（基于步骤 2） 获取并设置必需的 SSL 证书 设置测试环境，获取所需的 Git 仓库，更改配置，重新启动守护进程等 做其他需要做的事情  用脚本自动化 这些步骤非常常规，以至于有必要对其进行自动化并将脚本保存到中央位置（例如文件服务器），在需要时可以在此处下载脚本。为此，我编写了 100-120 行的 Bash shell 脚本，它为我完成了所有配置（包括错误检查）。这个脚本通过以下方式简化了我的工作流程：
 配置新的 Linux 系统（支持测试的架构） 登录系统并从中央位置下载自动化 shell 脚本 运行它来配置系统 开始测试  学习 Go 语言 我想学习 Go 语言 有一段时间了，将我心爱的 Shell 脚本转换为 Go 程序似乎是一个很好的项目，可以帮助我入门。它的语法看起来很简单，在尝试了一些测试程序后，我开始着手提高自己的知识并熟悉 Go 标准库。
我花了一个星期的时间在笔记本电脑上编写 Go 程序。我经常在我的 x86 服务器上测试程序，清除错误并使程序健壮起来，一切都很顺利。
直到完全转换到 Go 程序前，我继续依赖自己的 shell 脚本。然后，我将二进制文件推送到中央文件服务器上，以便每次配置新服务器时，我要做的就是获取二进制文件，将可执行标志打开，然后运行二进制文件。我对早期的结果很满意：
$ wget http://file.example.com/&lt;myuser&gt;/bins/prepnode $ chmod +x .
		
			<a href="https://www.lyhuilin.com/posts/go_cross_compilling/">Read more...</a>
		
	</div>
</article>

		
			<article>
	<h1><a href="https://www.lyhuilin.com/posts/linux_screen/">Linux/Mac 使用 GNU Screen 的小技巧</a></h1>
	<b><time>13.05.2021 12:50</time></b>
	
	<a href="/tags/screen">screen</a>
	
	<a href="/tags/linux">linux</a>
	
	<a href="/tags/mac">Mac</a>
	
	<a href="/tags/gnu-screen">GNU Screen</a>
	
	<div>
		学习基本的 GNU Screen 终端复用技术，然后下载我们的终端命令备忘录，以便你能够熟悉常用的快捷方式。
 对于一般用户而言，命令行终端窗口可能是令人困惑和神秘的。但随着你对 Linux 终端的进一步了解，你很快就会意识到它的高效和强大。不过，也不需要很长时间，你就会想让终端变得更加高效，除了将更多的终端放到你的终端，还有什么高好的方法能够提升你的终端效率呢？
终端复用 终端的许多优点之一是它是一个集中控制的界面。它是一个能让你访问数百个应用程序的窗口，而你与每一个应用程序进行交互所需要的只是一个键盘。但是，现代计算机几乎总是有多余的处理能力，而且现代计算机专家喜欢多任务处理，导致一个窗口处理数百个应用程序的能力是相当有限的。
解决这一问题的常见答案是终端复用：即将虚拟终端叠放在一起，然后在它们之间移动的能力。通过终端复用器，你保持了集中控制，但是当你进行多任务时，你能够进行终端切换。更好的是，你能够在终端中拆分屏幕，使得在同一时间显示多个屏幕窗口。
选择合适的复用器 一些终端提供类似的功能，有标签式界面和分割式视图，但也有细微的差别。首先，这些终端的功能依赖于图形化的桌面环境。其次，许多图形化的终端功能需要鼠标交互或使用不方便的键盘快捷键。终端复用器的功能在文本控制台上和在图形桌面上一样好用，而且键位绑定是针对常见的终端序列设计的，很方便。
现有两种流行的复用器：tmux 和 GNU Screen。尽管你与它们互动的方式略有不同，但它们做同样的事情，而且大多具有相同的功能。这篇文章是 GNU Screen 的入门指南。关于 tmux 的相关介绍，请阅读 Kevin Sonney 的 tmux 介绍。
使用 GNU Screen GNU Screen 的基本用法很简单，通过 screen 命令启动，你将进入 Screen 会话的第 0 个窗口。在你决定需要一个新的终端提示符前，你可能很难注意到有什么变化。
当一个终端窗口被某项活动占用（比如，你启动了文本编辑器 Vim 或 Jove 或者你在处理音视频，或运行批处理任务），你可以新建一个窗口。要打开一个新的窗口，按 Ctrl+A，释放，然后按 c。这将在你现有窗口的基础上创建一个新的窗口。
你会知道当前你是在一个新的窗口中，因为你的终端除了默认的提示符外，似乎没有任何东西。当然，你的另一个终端仍然存在，它只是躲在新窗口的后面。要遍历打开的窗口，按 Ctrl+A，释放，然后按 n（表示下一个）或按 p（表示上一个）。在只打开两个窗口的情况下， n 和 p 的功能是一样的，但你可以随时打开更多的窗口（Ctrl+A，然后 c ），并在它们之间切换。
分屏 GNU Screen 的默认行为更像移动设备的屏幕，而不是桌面：你一次只能看到一个窗口。如果你因为喜欢多任务而使用 GNU Screen ，那么只关注一个窗口可能看起来是一种退步。幸运的是，GNU Screen 可以让你把终端分成窗口中的窗口。
要创建一个水平分割窗口，按 Ctrl+A，然后按 s 。这将把一个窗口置于另一个窗口之上，就像窗格一样。然而，在你告诉它要显示什么之前，分割的空间是没有用途的。因此，在创建一个分割窗后，你可以用 Ctrl+A ，然后用 Tab 移动到分割窗中。一旦进入，使用 Ctrl+A 然后 n 浏览所有可用的窗口，直到你想显示的内容出现在分割窗格中。
		
			<a href="https://www.lyhuilin.com/posts/linux_screen/">Read more...</a>
		
	</div>
</article>

		
		<div>

	<a href="/page/6/">Previous Page</a>

7 of 9

	<a href="/page/8/">Next Page</a>

</div>

	</main>

	<footer>
	<p>&copy; 2021 <a href="https://www.lyhuilin.com/"><b>白菜林</b></a>.
	<a href="https://beian.miit.gov.cn/"><b>豫ICP备13005404号</b></a>.
	</p>
</footer>

</body>
</html>
